


/**
 * 统计val元素在 arr数组中出现的频次
 * @param  {[type]} arr [description]
 * @param  {[type]} val [description]
 * @return {[type]}     [description]
 */
function arrayFrequency(arr, val) {
	return arr.reduce((total, item) => {
		return total += val === item
	}, 0)
}

/**
 * 获取数组的最大值
 * @param  {[type]} arr [description]
 * @return {[type]}     [description]
 */
function arrayMax(arr) {
	return arr.reduce((max, item) => max > item ? max : item, arr[0]);
}


function maxPrice(arr) {
	return arr.reduce((maxPriceOne, item) =>{
		return  maxPriceOne.price > item.price ? maxPriceOne : item
	}, arr[0])
}

/**
 * 使用 reduce 实现数组去重
 * @param  {[type]} arr [description]
 * @return {[type]}     [description]
 */
function arrayUnique(arr) {
	return arr.reduce((pre, cur, index, arr) => {
		return !pre.includes(cur) ? [...pre, cur] : pre;
	}, [])
}
let arr = [1, 2, 6, 2, 1];





/**
 * 生成某个区间的数组
 * 
 */
function arrayRange(start, end, step = 1) {
	var arr = []
	// step = Math.max(1, step)
	for(var i = start; i <= end; i+=step) {
		arr.push(i)
	}
	return arr
}






/**
 * 自定义的排序函数
 * @param  {[type]} arr    [description]
 * @param  {[type]} sortFn [description]
 * @return {[type]}        [description]
 */
function arraySort(arr, sortFn) {
	for (var i = 0; i < arr.length; i++) {
		for(var j = i+1 ; j < arr.length; j++) {
			// 左边的比右边的大 就进行交换
			if(sortFn(arr[i], arr[j]) > 0) {
				var temp = arr[i]
				arr[i] = arr[j]
				arr[j] = temp
			}
		}
	}
	return arr ;
}
